<?php
 Session_Start () ;
 If (!$_SESSION ["repertoire_config"]) { Header ("Location: ../../") ; }
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../../include/module_absences.php") ;
 Include ("../include/config.inc") ;
 Include ("../include/absences.cfg") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 $rep_themes = "../../images/themes/" ;
 Include ($rep_themes."config.inc") ;
 $param_theme ["nom_repertoire"] = $themes [$themes [0][1]][1] ;
 $param_theme ["fichier_config"] = $themes [$themes [0][1]][2] ;
 Include ($rep_themes.$param_theme ["nom_repertoire"]."/".$param_theme ["fichier_config"]) ;
 
 $valider = var_courante ("valider", 0, null) ;
 $millesime = millesime (0) ;
 
 $id_util = utilparcode ($_SESSION ["code"]) ;

 If (IsSet ($valider))
  {
   If ($valider == "VaLiDeR")
    {
     @Set_Time_Limit (0) ;
     $ecraser = var_courante ("ecraser", 0, 0) ;
     If (File_Exists ($_FILES ["fichier"]["tmp_name"]) And ($_FILES ["fichier"]["size"] > 0))
      {
       // Allons-y
       $contenu = File ($_FILES ["fichier"]["tmp_name"]) ;
       // Initialisations
       $absences [0][0] = $retards [0][0] = $lettres [0][0] = 0 ;
       // Recherche des tranches horaires
       $hs = SQL_commande ("SELECT id_abs_horaire,debut,fin,nom FROM abs_horaires ORDER BY debut", $id_sql) ;
       $horaire [0][0] = SQL_nbr_lignes ($hs) ;
       For ($i = 1 ; $i <= $horaire [0][0] ; $i++)
        {
	 $ligne = SQL_ligne_suivante ($hs) ;
	 $debut = Explode (":", $ligne [1]) ;
	 $fin = Explode (":", $ligne [2]) ;
	 $horaire [$i][0] = $ligne [0] ; // Id
	 $horaire [$i][1] = $debut [0]*3600+$debut [1]*60+$debut [2] ; // Debut en secondes
	 $horaire [$i][2] = $fin [0]*3600+$fin [1]*60+$fin [2] ; // Fin en secondes
	 $horaire [$i][3] = $ligne [3] ; // Nom
	 $horaire [$i][4] = $ligne [1] ; // Debut
	 $horaire [$i][5] = $ligne [2] ; // Fin
	}
       // Recherche des motifs
       $mts = SQL_commande ("SELECT id_abs_motif,nom FROM abs_motifs ORDER BY nom", $id_sql) ;
       $motifs [0][0] = SQL_nbr_lignes ($mts) ;
       For ($i = 1 ; $i <= $motifs [0][0] ; $i++)
        {
	 $ligne = SQL_ligne_suivante ($mts) ;
	 $motifs [$i][0] = $ligne [0] ; // Id
	 $motifs [$i][1] = conversion_html_ascii ($ligne [1]) ; // Nom
	}
       // Recherche des types
       $tps = SQL_commande("SELECT id_abs_type_saisie,type FROM abs_types_saisie WHERE type='1' OR type='2' ORDER BY type", $id_sql) ;
       $nbr_tps = SQL_nbr_lignes ($tps) ;
       For ($i = 0 ; $i < $nbr_tps ; $i++)
        {
         $tpe = SQL_ligne_suivante ($tps) ;
         If ($tpe [1] == 1) { $id_absence = $tpe [0] ; }
	 ElseIf ($tpe [1] == 2) { $id_retard = $tpe [0] ; }
	}
       //--- Debut analyse du fichier recu
       // Entete
       $nbr_max_comparaison = 0 ;
       $ligne = Explode (";", Chop ($contenu [0])) ;
       For ($i = 0 ; $i < SizeOf ($ligne) ; $i++)
        {
	 $ok = 0 ;
	 $j = 1 ;
	 While (($j <= $champs_moliere [0][0]) And ($ok == 0))
	  {
	   If ($ligne [$i] == $champs_moliere [$j][0]) { $ok = $j ; }
	   $j++ ;
	  }
	 If ($ok > 0)
	  {
	   $entete [$i] = $ok ;
	   If (($champs_moliere [$ok][1] >= 2) And ($champs_moliere [$ok][1] <= 5)) { $nbr_max_comparaison++ ; }
	  }
	 Else { $entete [$i] = 0 ; }
	}
       // Les enregistrements
       $id_eleve1 = $id_eleve2 = $id_eleve = $nbr_comparaison_2 = $mise_a_jour = 0 ;
       $chaine_comparaison_2 = "" ;
       $num_abs = $absences [0][0] ;
       $num_ret = $retards [0][0] ;
       $num_lettre = $lettres [0][0] ;
       $mise_a_jour_eleve [0] = 0 ;
       For ($i = 1 ; $i < SizeOf ($contenu) ; $i++)
        {
	 $ligne = Explode (";", Str_Replace ("; ", "|", conversion_ascii_utf8 (Chop ($contenu [$i])))) ;
	 $j = 0 ;
	 // Nouvel eleve
	 If ($ligne [1] != "")
	  {
	   // On recherche l'id eleve unique si existe
	   If (($id_eleve1 > 0) And ($id_eleve2 > 0))
	    {
	     If ($id_eleve1 == $id_eleve2) { $id_eleve = $id_eleve1 ; $repere1 = $repere11 ; $repere2 = $repere21 ; $classe = $classe2 ; $code_classe = $code_classe2 ; }
	    }
	   ElseIf ($id_eleve1 > 0) { $id_eleve = $id_eleve1 ; $repere1 = $repere11 ; $repere2 = $repere21 ; $classe = $classe1 ; $code_classe = $code_classe1 ; }
	   ElseIf ($id_eleve2 > 0) { $id_eleve = $id_eleve2 ; $repere1 = $repere12 ; $repere2 = $repere22 ; $classe = $classe2 ; $code_classe = $code_classe2 ; }
	   Else { $id_eleve = 0 ; $repere1 = $repere2 = "" ; $classe = 0 ; $code_classe = "" ; }
	   // Si existe alors remplissage du tableau
	   If ($id_eleve != 0)
	    {
             For ($k = $num_abs+1 ; $k <= $absences [0][0] ; $k++)
	      {
	       $absences [$k][0] = $id_eleve ;
	       $absences [$k][7] = $repere1 ;
	       $absences [$k][8] = $repere2 ;
	       $absences [$k][10] = $classe ;
	       $absences [$k][11] = $code_classe ;
	      }
	     For ($k = $num_ret+1 ; $k <= $retards [0][0] ; $k++)
	      {
	       $retards [$k][0] = $id_eleve ;
	       $retards [$k][6] = $repere1 ;
	       $retards [$k][7] = $repere2 ;
	       $retards [$k][9] = $classe ;
	       $retards [$k][10] = $code_classe ;
	      }
	     For ($k = $num_lettre+1 ; $k <= $lettres [0][0] ; $k++)
	      {
	       $lettres [$k][0] = $id_eleve ;
	       $lettres [$k][1] = $repere1 ;
	       $lettres [$k][2] = $repere2 ;
	      }
	     If ($mise_a_jour == 1)
	      {
	       $mise_a_jour_eleve [0]++ ;
	       $mise_a_jour_eleve [$mise_a_jour_eleve [0]] = "UPDATE ".$table_maj." SET ".$champ."='".$valeur."' WHERE id_eleve='".$id_eleve."' LIMIT 1" ;
	      }
	    }
	   $id_eleve1 = $id_eleve2 = $id_eleve = $nbr_comparaison_2 = $mise_a_jour = 0 ;
	   $chaine_comparaison_2 = "" ;
	   $num_abs = $absences [0][0] ;
	   $num_ret = $retards [0][0] ;
	   $num_lettre = $lettres [0][0] ;
	  }
	 While ($j < SizeOf ($ligne))
	  {
	   If ($entete [$j] > 0)
	    {
	     If ($ligne [$j] != "")
	      {
	       Switch ($champs_moliere [$entete [$j]][1])
	        {
	          Case 1 : // Comparaison 1
	                   $table = Explode ("->", $champs_moliere [$entete [$j]][2]) ;
			   $ok = SQL_commande ("SELECT id_eleve,repere1,repere2,classe,code_classe FROM ".$table [0]." WHERE ".$table [1]."='".StrToUpper ($ligne [$j])."' AND millesime='".$millesime."' LIMIT 1", $id_sql) ;
			   If (SQL_nbr_lignes ($ok) == 1)
			    {
			     $eleve = SQL_ligne_suivante ($ok) ;
			     $id_eleve2 = $eleve [0] ;
			     $repere12 = $eleve [1] ;
			     $repere22 = $eleve [2] ;
			     $classe2 = $eleve [3] ;
			     $code_classe2 = $eleve [4] ;
			    }
			   ElseIf ($champs_moliere [$entete [$j]][4] == 1)
			    {
			     $mise_a_jour = 1 ;
			     $table_maj = $table [0] ;
			     $champ = $table [1] ;
			     $valeur = StrToUpper ($ligne [$j]) ;
			    }
			   Else { $mise_a_jour = 0 ; }
	                   Break ;
	          Case 2 : // Comparaison 2
		  Case 3 :
		  Case 4 :
		  Case 5 : 
		           Switch ($champs_moliere [$entete [$j]][1])
		            {
			     Case 2 : $chaine = " LIKE '".$ligne [$j]."%'" ; Break ;
			     Case 3 : $c1 = Explode ("/", $ligne [$j]) ;
			              If ($c1 [2] <= 99) { $c1 [2] = "19".$c1 [2] ; } Else { $c1 [2] = "20".$c1 [2] ; }
			              $chaine = "='".$c1 [2]."-".$c1 [1]."-".$c1 [0]."'" ;
				      Break ;
			     Case 4 : $chaine = "='".StrToUpper ($ligne [$j])."'" ; Break ;
			     Case 5 : $chaine = "='".$ligne [$j]."'" ; Break ;
			    }
			   
			   $table = Explode ("->", $champs_moliere [$entete [$j]][2]) ;
			   $chaine_comparaison_2 .= $table [1].$chaine." AND " ;
		           $nbr_comparaison_2++ ;
			   If ($nbr_comparaison_2 == $nbr_max_comparaison)
			    {
			     If ($id_eleve2 == 0)
			      {
			       $ok = SQL_commande ("SELECT id_eleve,repere1,repere2,classe,code_classe FROM ".$table [0]." WHERE ".$chaine_comparaison_2." millesime='".$millesime."' LIMIT 1", $id_sql) ;
			       If (SQL_nbr_lignes ($ok) == 1)
			        {
			         $eleve = SQL_ligne_suivante ($ok) ;
			         $id_eleve1 = $eleve [0] ;
				 $repere11 = $eleve [1] ;
			         $repere21 = $eleve [2] ;
				 $classe1 = $eleve [3] ;
				 $code_classe1 = $eleve [4] ;
			        }
			      }
			    }
	                   Break ;
		 Case 10 : // Details des absences
		           $sous_ligne = Explode ("|",$ligne [$j]) ;
			   $ok_abs = 0 ;
			   For ($k = 0 ; $k < SizeOf ($sous_ligne) ; $k++)
			    {
			     $details = Explode (" ", $sous_ligne [$k]) ;
			     If ($details [1] != "")
			      {
			       $absences [0][0]++ ;
			       If ($ok_abs > 0)
			        {
				 $absences [$absences [0][0]][1] = $absences [$ok_abs][1] ; // Date
				 $decalage = 2 ;
				}
			       Else
			        {
				 $dt = Explode ("/", $details [1]) ;
			         $details [1] = $dt [2]."-".$dt [1]."-".$dt [0] ;
				 $absences [$absences [0][0]][1] = $details [1] ; // Date
				 $decalage = 0 ;
				 $ok_abs = $absences [0][0] ;
				}
			       $absences [$absences [0][0]][2] = $details [3-$decalage] ; // Heure de depart
			       $absences [$absences [0][0]][3] = $details [5-$decalage] ; // Heure de fin
			       $absences [$absences [0][0]][4] = $details [7-$decalage] ; // Motif
			       For ($kk = 8-$decalage ; $kk <= SizeOf ($details) ; $kk++)
			        {
				 If ($details [$kk] != "") { $absences [$absences [0][0]][4] .= " ".$details [$kk] ; } // Motif
				}
			       // Recherche des tranches
			       $debut = Explode ("H", StrToUpper ($details [3-$decalage])) ;
			       $fin = Explode ("H", StrToUpper ($details [5-$decalage])) ;
			       $hdebut = $debut [0]*3600+$debut [1]*60+$debut [2] ;
			       $hfin = $fin [0]*3600+$fin [1]*60+$fin [2] ;
			       // Recherche tranche debut
			       $kk = $ok = 0 ;
			       While (($kk <= $horaire [0][0]) And ($ok == 0))
			        {
				 $kk++ ;
				 If (($hdebut >= $horaire [$kk][1]) And ($hdebut < $horaire [$kk][2])) { $ok = 1 ; }
				}
			       If ($ok == 1) { $absences [$absences [0][0]][5] = $kk ; }
			       // Recherche tranche fin
			       $kk-- ; 
			       $ok = 0 ;
			       While (($kk <= $horaire [0][0]) And ($ok == 0))
			        {
				 $kk++ ;
				 If (($hfin > $horaire [$kk][1]) And ($hfin <= $horaire [$kk][2])) { $ok = 1 ; }
				}
			       If ($ok == 1) { $absences [$absences [0][0]][6] = $kk ; } Else { $absences [$absences [0][0]][6] = $horaire [0][0] ; }
			       // Recherche des motifs
			       If ($absences [$absences [0][0]][4] != "sans motif")
			        {
			         $kk = $ok = 0 ;
			         While (($kk <= $motifs [0][0]) And ($ok == 0))
			          {
				   $kk++ ;
				   If (($motifs [$kk][1] == $absences [$absences [0][0]][4]) Or (StrToUpper ($motifs [$kk][1]) == StrToUpper ($absences [$absences [0][0]][4]))) { $ok = 1 ; }
				  }
			         If ($ok == 1) { $absences [$absences [0][0]][9] = $kk ; }
			         Else
			          {
				   $motifs [0][0]++ ;
				   $motifs [$motifs [0][0]][0] = 0 ;
				   $motifs [$motifs [0][0]][1] = $absences [$absences [0][0]][4] ;
				   $absences [$absences [0][0]][9] = $motifs [0][0] ;
				  }
				}
			       Else { $absences [$absences [0][0]][9] = 0 ; }
			      }
			    }
		           Break ;
		 Case 11 : // Details des retards
			   If ($ligne [$j] != "- pas de retards -")
			    {
		             $sous_ligne = Explode ("|",$ligne [$j]) ;
			     $ok_abs = 0 ;
			     For ($k = 0 ; $k < SizeOf ($sous_ligne) ; $k++)
			      {
			       $details = Explode (" ", $sous_ligne [$k]) ;
			       If ($details [1] != "")
			        {
			         $retards [0][0]++ ;
			         If ($ok_abs > 0)
			          {
			  	   $retards [$retards [0][0]][1] = $retards [$ok_abs][1] ; // Date
			  	   $decalage = 2 ;
				  }
			         Else
			          {
			  	   $dt = Explode ("/", $details [1]) ;
			           $details [1] = $dt [2]."-".$dt [1]."-".$dt [0] ;
				   $retards [$retards [0][0]][1] = $details [1] ; // Date
				   $decalage = 0 ;
				   $ok_abs = $retards [0][0] ;
				  }
			         $retards [$retards [0][0]][2] = $details [3-$decalage] ; // Heure de depart
			         $retards [$retards [0][0]][3] = $details [5-$decalage] ; // Motif
			         For ($kk = 6-$decalage ; $kk <= SizeOf ($details) ; $kk++)
			          {
				   If ($details [$kk] != "") { $retards [$retards [0][0]][3] .= " ".$details [$kk] ; } // Motif
			  	  }
			         // Recherche des tranches
			         $debut = Explode ("H", StrToUpper ($details [3-$decalage])) ;
			         $hdebut = $debut [0]*3600+$debut [1]*60+$debut [2] ;
			         // Recherche tranche
			         $kk = $ok = 0 ;
			         While (($kk <= $horaire [0][0]) And ($ok == 0))
			          {
				   $kk++ ;
				   If (($hdebut >= $horaire [$kk][1]) And ($hdebut < $horaire [$kk][2])) { $ok = 1 ; }
				  }
			         If ($ok == 1) { $retards [$retards [0][0]][4] = $kk ; }
			         // Recherche des motifs
			         If ($retards [$retards [0][0]][3] != "sans motif")
			          {
			           $kk = $ok = 0 ;
			           While (($kk <= $motifs [0][0]) And ($ok == 0))
			            {
				     $kk++ ;
				     If ($motifs [$kk][1] == $retards [$retards [0][0]][3]) { $ok = 1 ; }
				    }
			           If ($ok == 1) { $retards [$retards [0][0]][8] = $kk ; }
			           Else
			            {
				     $motifs [0][0]++ ;
				     $motifs [$motifs [0][0]][0] = 0 ;
				     $motifs [$motifs [0][0]][1] = $retards [$retards [0][0]][3] ;
				     $retards [$retards [0][0]][8] = $motifs [0][0] ;
				    }
				  }
			         Else { $retards [$retards [0][0]][8] = 0 ; }
			        }
			      }
			    }
		           Break ;
		 Case 12 : // Courriers envoyes
		           $sous_ligne = Explode (", ",$ligne [$j]) ;
			   For ($k = 0 ; $k < SizeOf ($sous_ligne) ; $k++)
			    {
			     $details = Explode (" ", $sous_ligne [$k]) ;
			     If ($details [2] != "")
			      {
			       $dt = Explode ("/", $details [2]) ;
			       // Enregistrement
			       $lettres [0][0]++ ;
			       $lettres [$lettres [0][0]][3] = SubStr ($details [0], 2, StrLen ($details [0])-2) ; // Numero de la lettre
			       $lettres [$lettres [0][0]][4] = $dt [2]."-".$dt [1]."-".$dt [0] ; // Date de l'envoi
			      }
			    }
		           Break ;
		 Default :
		           //Echo "<td> ".$ligne [$j]." </td>" ;
		           Break ;
	        }
	      }
	    }
	   $j++ ;
	  }
	}
       // Traitement des releves
       Function recherche_classe ($table, $classe, $code_classe)
        {
	 $i = 1 ;
	 $ok = 0 ;
	 While (($i <= $table [0][0]) And ($ok == 0))
	  {
	   If (($table [$i][1] == $classe) And ($table [$i][2] == $code_classe)) { $ok = $i ; }
	   $i++ ;
	  }
	 Return $ok ;
	}
       Function recherche_date ($table, $position, $date, $tranche)
        {
	 $i = 1 ;
	 $ok = 0 ;
	 While (($i <= $table [$position][0]) And ($ok == 0))
	  {
	   If (($table [$position][$i*2+1] == $date) And ($table [$position][$i*2+2] == $tranche)) { $ok = $i ; }
	   $i++ ;
	  }
	 Return $ok ;
	}
       $releves [0][0] = 0 ;
       For ($i = 1 ; $i <= $absences [0][0] ; $i++)
        {
	 If ($absences [$i][0] > 0)
	  {
	   $position = recherche_classe ($releves, $absences [$i][10], $absences [$i][11]) ;
	   For ($j = $absences [$i][5] ; $j <= $absences [$i][6] ; $j++)
	    {
	     If ($position == 0)
	      {
	       // Premiers renseignements sur une classe
	       $releves [0][0]++ ;
	       $releves [$releves [0][0]][0] = 1 ; // Nombre
	       $releves [$releves [0][0]][1] = $absences [$i][10] ; // Classe
	       $releves [$releves [0][0]][2] = $absences [$i][11] ; // Code classe
	       $releves [$releves [0][0]][3] = $absences [$i][1] ; // Premiere Date
	       $releves [$releves [0][0]][4] = $horaire [$j][0] ; // Premiere Tranche
	       $position = $releves [0][0] ;
	      }
	     Else
	      {
	       // On continu
	       $pos_tranche = recherche_date ($releves, $position, $absences [$i][1], $horaire [$j][0]) ;
	       If ($pos_tranche == 0)
	        {
		 // Ajout une tranche non repertoriee
		 $releves [$releves [0][0]][0]++ ; // Nombre
	         $releves [$releves [0][0]][$releves [$releves [0][0]][0]*2+1] = $absences [$i][1] ; // Date
	         $releves [$releves [0][0]][$releves [$releves [0][0]][0]*2+2] = $horaire [$j][0] ; // Tranche
		}
	      }
	    }
	  }
	}
       For ($i = 1 ; $i <= $retards [0][0] ; $i++)
        {
	 $position = recherche_classe ($releves, $retards [$i][9], $retards [$i][10]) ;
	 If ($retards [$i][0] > 0)
	  {
	   If ($position == 0)
	    {
	     // Premiers renseignements sur une classe
	     $releves [0][0]++ ;
	     $releves [$releves [0][0]][0] = 1 ; // Nombre
	     $releves [$releves [0][0]][1] = $retards [$i][9] ; // Classe
	     $releves [$releves [0][0]][2] = $retards [$i][10] ; // Code classe
	     $releves [$releves [0][0]][3] = $retards [$i][1] ; // Premiere Date
	     $releves [$releves [0][0]][4] = $horaire [$retards [$i][4]][0] ; // Premiere Tranche
	     $position = $releves [0][0] ;
	    }
	   Else
	    {
	     // On continu
	     $pos_tranche = recherche_date ($releves, $position, $retards [$i][1], $horaire [$retards [$i][4]][0]) ;
	     If ($pos_tranche == 0)
	      {
	       // Ajout une tranche non repertoriee
	       $releves [$releves [0][0]][0]++ ; // Nombre
	       $releves [$releves [0][0]][$releves [$releves [0][0]][0]*2+1] = $retards [$i][1] ; // Premiere Date
	       $releves [$releves [0][0]][$releves [$releves [0][0]][0]*2+2] = $horaire [$retards [$i][4]][0] ; // Premiere Tranche
	      }
	    }
	  }
	}
       $requete = "INSERT INTO abs_releves (classe,code_classe,date,tranche,date_initiale,heure_initiale,saisie_initiale,date_modif,heure_modif,saisie_modif) VALUES " ;
       $compteur = 0 ;
       $dt = Date ("Y-m-d") ;
       $hr = Date ("H:i:s") ;
       For ($i = 1 ; $i <= $releves [0][0] ; $i++)
        {
	 For ($j = 1 ; $j <= $releves [$i][0] ; $j++)
	  {
	   If ($compteur > 0) { $requete .= "," ; }
	   //echo "('".$releves [$i][1]."','".$releves [$i][1]."','".$releves [$i][$j*2+1]."','".$releves [$i][$j*2+2]."','".$dt."','".$hr."','".$id_util."','".$dt."','".$hr."','".$id_util."')<br>" ;
	   $requete .= "('".$releves [$i][1]."','".$releves [$i][2]."','".$releves [$i][$j*2+1]."','".$releves [$i][$j*2+2]."','".$dt."','".$hr."','".$id_util."','".$dt."','".$hr."','".$id_util."')" ;
	   $compteur++ ;
	  }
	}
       If ($compteur > 0)
        {
	 If ($ecraser == 1) { $ok = SQL_commande ("DELETE FROM abs_releves", $id_sql) ; }
	 $ok = SQL_commande ($requete, $id_sql) ;
	}
       // Ajout d'un champ en fin de table
       $ok = SQL_commande ("ALTER TABLE abs_saisies ADD numero INT(11) NOT NULL", $id_sql) ;
       $requete = "INSERT INTO abs_saisies (date,tranche,eleve,repere1,repere2,type,regularisation,numero) VALUES " ;
       $compteur = 0 ;
       For ($i = 1 ; $i <= $absences [0][0] ; $i++)
        {
	 If ($absences [$i][0] > 0)
	  {
	   If ($absences [$i][9] > 0) { $regul = 1 ; } Else { $regul = 0 ; }
	   For ($j = $absences [$i][5] ; $j <= $absences [$i][6] ; $j++)
	    {
	     If ($compteur > 0) { $requete .= "," ; }
	     $requete .= "('".$absences [$i][1]."','".$horaire [$j][0]."','".$absences [$i][0]."','".$absences [$i][7]."','".$absences [$i][8]."','".$id_absence."','".$regul."','".$absences [$i][9]."')" ;
	     $compteur++ ;
	    }
	  }
	}
       For ($i = 1 ; $i <= $retards [0][0] ; $i++)
        {
	 If ($retards [$i][0] > 0)
	  {
	   If ($retards [$i][8] > 0) { $regul = 1 ; } Else { $regul = 0 ; }
	   If ($compteur > 0) { $requete .= "," ; }
	   $requete .= "('".$retards [$i][1]."','".$horaire [$retards [$i][4]][0]."','".$retards [$i][0]."','".$retards [$i][6]."','".$retards [$i][7]."','".$id_retard."','".$regul."','".$retards [$i][8]."')" ;
	   $compteur++ ;
	  }
	}
       If ($compteur > 0)
        {
	 If ($ecraser == 1) { $ok = SQL_commande ("DELETE FROM abs_saisies", $id_sql) ; }
	 $ok = SQL_commande ($requete, $id_sql) ;
	}
       // Lettres envoyees
       If ($retards [0][0] > 0)
        {
         $requete = "INSERT INTO abs_publipostage (eleve,repere1,repere2,lettre,date_demande,date_envoi,envoi) VALUES " ;
         $compteur = 0 ;
         For ($i = 1 ; $i <= $lettres [0][0] ; $i++)
          {
  	   If ($compteur > 0) { $requete .= "," ; }
  	   $requete .= "('".$lettres [$i][0]."','".$lettres [$i][1]."','".$lettres [$i][2]."','".$lettres [$i][3]."','".$lettres [$i][4]."','".$lettres [$i][4]."','1')" ;
	   $compteur++ ;
  	  }
         If ($compteur > 0)
	  {
	   If ($ecraser == 1) { $ok = SQL_commande ("DELETE FROM abs_publipostage", $id_sql) ; }
	   $ok = SQL_commande ($requete, $id_sql) ;
	  }
	}
       // Regularisations
       $requete = "INSERT INTO abs_regularisations (id_abs_saisie,id_abs_justificatif,id_abs_motif) VALUES " ;
       $compteur = 0 ;
       // Selectionne le justificatif par defaut
       $jd = SQL_commande ("SELECT id_abs_type_justificatif FROM abs_types_justificatif WHERE selection='1' LIMIT 1", $id_sql) ;
       $jd1 = SQL_ligne_suivante ($jd) ;
       $id_abs_justificatif = $jd1 [0] ;
       For ($i = 1 ; $i <= $motifs [0][0] ; $i++)
        {
	 // Insertion nouveau motif
	 If ($motifs [$i][0] == 0)
	  {
	   $ok = SQL_commande ("INSERT INTO abs_motifs (nom) VALUES ('".$motifs [$i][1]."')", $id_sql) ;
	   $ok = SQL_commande ("SELECT id_abs_motif FROM abs_motifs WHERE nom='".$motifs [$i][1]."' LIMIT 1", $id_sql) ;
	   If (SQL_nbr_lignes ($ok) == 1)
	    {
	     $ok1 = SQL_ligne_suivante ($ok) ;
	     $motifs [$i][0] = $ok1 [0] ;
	    }
          }
         If ($motifs [$i][0] > 0)
	  {
           // Recherche de tous les id_abs_saisies
	   $saisies = SQL_commande ("SELECT id_abs_saisie FROM abs_saisies WHERE numero='".$i."'", $id_sql) ;
	   $nbr = SQL_nbr_lignes ($saisies) ;
	   For ($k = 0 ; $k < $nbr ; $k++)
	    {
	     $id_abs_saisie = SQL_ligne_suivante ($saisies) ;
	     If ($compteur > 0) { $requete .= "," ; }
	     $requete .= "('".$id_abs_saisie [0]."','".$id_abs_justificatif."','".$motifs [$i][0]."')" ;
	     $compteur++ ;
	    }
	  }
	}
       If ($compteur > 0)
        {
	 If ($ecraser == 1) { $ok = SQL_commande ("DELETE FROM abs_regularisations", $id_sql) ; }
	 $ok = SQL_commande ($requete, $id_sql) ;
        }
       // Enleve le numero
       $ok = SQL_commande ("ALTER TABLE abs_saisies DROP numero", $id_sql) ;
       // Mise a jour table avec donnees CSV
       If ($mise_a_jour_eleve [0] > 0)
        {
	 For ($i = 1 ; $i <= $mise_a_jour_eleve [0] ; $i++)
	  {
	   $ok = SQL_commande ($mise_a_jour_eleve [$i], $id_sql) ;
	  }
	}
       $message = "Mise &agrave; jour effectu&eacute;e" ;
      }
     Else
      {
       // Traitement des erreurs de transmission
       Switch ((integer)$_FILES ["fichier"]["error"])
        {
         Case 1 : $message = "Le param&egrave;tre <i>upload_max_filesize</i> dans <b>php.ini</b> est trop petit." ; Break ;
         Case 2 : $message = "Le param&egrave;tre HTML, <i>MAX_FILE_SIZE</i> est trop petit." ; Break ;
         Case 3 : $message = "Le transfert du fichier ne s'est pas effectu&eacute; dans sa totalit&eacute; (r&eacute;pertoire temporaire trop petit ?)." ; Break ;
         Case 4 : $message = "Aucun transfert de fichier ne s'est effectu&eacute; (probl&egrave;me serveur web ?)." ; Break ;
        Default : $message = "Erreur lors du t&eacute;l&eacute;chargement du fichier (corrompu ?)" ; Break ;
        }
      }
    }
  }
 
 $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
 $l = SQL_tableau_associatif ($resultats, "") ; 
 
 Echo "<html><head>" ;
 entete_html ("Garennes - Module absences - Importation &agrave; partir de Moli&egrave;re&#174;", "", 1) ;
 Echo styles ("none", "none", "none", $l ["lien"], "none") ;
 Echo "</head>" ;
 
 Echo "<body background=\"../images/fond.png\" text=\"#000000\">" ;
 If (IsSet ($message) And ($message != "")) { Echo "<center><font color=\"#ff0000\">".$message."</font></center>" ; }
 Echo "<form action=\"abs_import_moliere.php\" method=\"post\" enctype=\"multipart/form-data\">" ; 
 Echo "<br><table border=\"1\" align=\"center\" bgcolor=\"".$l ["couleur_fond"]."\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:1px solid #000000;border-collapse:collapse;\">" ;
 Echo "<tr><td><table border=\"0\" align=\"center\" cellspacing=\"0\" cellpadding=\"0\">" ;
 Echo "<tr bgcolor=\"".$l ["lien"]."\"><td colspan=\"2\">&nbsp;<b>Importation&nbsp;CSV...</b>&nbsp;</td></tr>" ;
 Echo "<tr><td colspan=\"2\">&nbsp;</td></tr>" ;
 Echo "<tr><td>&nbsp;Fichier&nbsp;CSV&nbsp;:&nbsp;</td><td><input type=\"file\" name=\"fichier\" value=\"\">&nbsp;</td></tr>" ;
 Echo "<tr><td colspan=\"2\">&nbsp;</td></tr>" ;
 Echo "<tr><td align=\"right\"><input type=\"checkbox\" name=\"ecraser\" value=\"1\"></td>" ;
 Echo "<td>&nbsp;Si&nbsp;coch&eacute;&nbsp;alors&nbsp;effacer&nbsp;toutes&nbsp;les&nbsp;entr&eacute;es&nbsp;pour&nbsp;les&nbsp;remplacer.&nbsp;</td></tr>" ;
 Echo "<tr><td colspan=\"2\">&nbsp;</td></tr>" ;
 Echo "<tr><td colspan=\"2\" align=\"center\"><input type=\"hidden\" name=\"valider\" value=\"VaLiDeR\">" ;
 Echo "<input type=\"submit\" name=\"submit\" value=\" Valider \"></td></tr>" ;
 Echo "<tr><td colspan=\"2\">&nbsp;</td></tr>" ;
 Echo "</table></td></tr></table>" ;
 Echo "</form>" ;
 Echo "<br><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">" ;
 Echo "<tr><td colspan=\"2\">Vous pouvez importer un fichier au format texte CSV (poss&egrave;de une extension .CSV ou .TXT).</td/></tr>" ;
 Echo "<tr><td colspan=\"2\">Si vous utilisez MOL.ERE(tm) (d'OMT), vous pouvez effectuer l'op&eacute;ration suivante (afin de r&eacute;cup&eacute;rer le fichier) :</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;1&nbsp;:&nbsp;</td><td>&nbsp;Menu \"S&eacute;lections\" -> \"Liste Multicrit&egrave;res\" ou CRTL+L</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;2&nbsp;:&nbsp;</td><td>&nbsp;Onglet \"Pr&eacute;sentation de la liste\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;3&nbsp;:&nbsp;</td><td>&nbsp;<b>Cocher dans la partie <i>El&egrave;ves</i></b></td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"Nom\", \"Pr&eacute;nom\", \"Division\", \"Sexe\", \"Num&eacute;ro national\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;<b>Cocher dans la partie <i>Absences et retards</i></b></td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"NB 1/2 abs\", \"NB heures abs\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"NB heures abs non valables\", \"NB retards\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"D&eacute;tail abs(date et d&eacute;tail par heure)\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"Afficher toutes les absences depuis le d&eacute;but de l'ann&eacute;e\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"D&eacute;tail des retards(date et d&eacute;tail des heures)\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"Afficher tous les motifs d'absences et de retards\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;<b>Cocher dans la partie <i>Divers</i></b></td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"Courrier envoy&eacute;s (date et mod&egrave;les)\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"Indicateurs\"</td/></tr>" ;
 Echo "<tr><td></td><td>&nbsp;&nbsp;\"M&eacute;mo\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;4&nbsp;:&nbsp;</td><td>&nbsp;Cliquer sur \"Lister\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;5&nbsp;:&nbsp;</td><td>&nbsp;Cliquer sur \"Exporter\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;6&nbsp;:&nbsp;</td><td>&nbsp;S&eacute;lectionner \"Fichier de type texte d&eacute;limit&eacute; (.TXT)\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;7&nbsp;:&nbsp;</td><td>&nbsp;Choisir un nm de fichier et un emplacement en cliquant sur \"...\"</td/></tr>" ;
 Echo "<tr><td align=\"right\">&Eacute;tape&nbsp;8&nbsp;:&nbsp;</td><td>&nbsp;Cliquer sur \"Exporter\"</td/></tr>" ;
 Echo "</table>" ;
 Echo "</body></html>" ;
?>